package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"encoding/xml"
)

/*
<xml>
<appid><![CDATA[wx34ab44a8222c441f]]></appid>
<attach><![CDATA[rrrmai]]></attach>
<body><![CDATA[人人人脉-充值]]></body>
<mch_id><![CDATA[1401969102]]></mch_id>
<nonce_str><![CDATA[307226279718060033]]></nonce_str>
<notify_url><![CDATA[https://www.rrkd.cn/rrrmai/pay/wxpay/callback]]></notify_url>
<out_trade_no><![CDATA[307201722912112641]]></out_trade_no>
<spbill_create_ip><![CDATA[127.0.0.1]]></spbill_create_ip>
<total_fee><![CDATA[8]]></total_fee>
<trade_type><![CDATA[APP]]></trade_type>
<sign>955E65931F50A7593E3B46215B0AFA12</sign>
</xml>
*/

type Params struct {
	XMLName xml.Name `xml:"xml"`
	AppId string  `xml:"appid" json:"app_id"`
	Attach string `xml:"attach" json:"attach"`
	Mch_id string `xml:"mch_id" json:"mch_id"`
	Nonce_str string `xml:"nonce_str,omitempty" json:"nonce_str"`
	Notify_url string `xml:"notify_url" json:"notify_url"`
	Out_trade_no string `xml:"out_trade_no" json:"out_trade_no"`
	Spbill_create_ip string `xml:"spbill_create_ip" json:"spbill_create_ip"`
	Total_fee int64 `xml:"total_fee" json:"total_fee"`
	Trade_type string `xml:"trade_type" json:"trade_type"`
	Sign string `xml:"sign,omitempty" json:"sign"`
}

type XmlOut struct {
	XMLName xml.Name `xml:"xml"`
	AppId string  `xml:"appid" json:"app_id"`
	Attach string `xml:"attach" json:"attach"`
	Mch_id string `xml:"mch_id" json:"mch_id"`
	Nonce_str string `xml:"nonce_str" json:"nonce_str"`
	Notify_url string `xml:"notify_url" json:"notify_url"`
	Out_trade_no string `xml:"out_trade_no" json:"out_trade_no"`
	Spbill_create_ip string `xml:"spbill_create_ip" json:"spbill_create_ip"`
	Total_fee int64 `xml:"total_fee" json:"total_fee"`
	Trade_type string `xml:"trade_type" json:"trade_type"`
	Sign string `xml:"sign" json:"sign"`
}

func main() {
	//解析xml
	var params Params
	data,err:=ioutil.ReadFile("/Users/os/Desktop/xml_pares.xml")
	if err !=nil{
		log.Panic(err)
	}
	err=xml.Unmarshal(data,&params)
	if err !=nil{
		log.Panic(err)
	}
	fmt.Println(params)
	params.Sign=""
	//xmlout:=XmlOut{Sign:"1111"}
	da,err:=xml.MarshalIndent(&params," "," ")
	log.Println(string(da))
}
